﻿using System.Collections.Generic;
using System.Linq;
using System.Web.Security;
using Controller2.Models;

namespace Controller2.BLL
{
    public class AccountBll
    {
        /// <summary>
        /// Faz o autocomplete do campo de texto de pesquisa
        /// </summary>
        /// <param name="db">Contexto de dados</param>
        /// <param name="filtro">Valor do filtro (combobox)</param>
        /// <param name="termoPesquisa">Termo da pesquisa (valor digitado)</param>
        /// <param name="numeroLinhas">Número de registros a serem mostrados</param>
        /// <returns></returns>
        public static IEnumerable<string> AutoComplete(ControllerBDModelContainer db, int filtro, string termoPesquisa, int numeroLinhas)
        {
            IEnumerable<string> resultado;
            var users = new List<MembershipUser>();
            foreach (MembershipUser i in Membership.GetAllUsers())
            {
                users.Add(i);
            }
            switch (filtro)
            {
                default:
                    resultado = (from u in users
                                 where u.UserName.Contains(termoPesquisa)
                                 select u.UserName).Distinct();
                    break;
                case 1:
                    resultado = (from u in users
                                 where u.UserName.Contains(termoPesquisa)
                                 select u.UserName).Distinct();
                    break;
                case 2:
                    resultado = (from u in users
                                 join p in db.Pessoa.ToList() on u.UserName equals p.UserName into
                                 up
                                 from x in up.DefaultIfEmpty()
                                 select x == null ? "" : x.NomePessoa).Distinct();
                    break;
            }
            return resultado.Take(numeroLinhas);
        }
    }
}